package SpyGround;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import robot.Robot;
import robot.AI.Roomba;
import robot.devices.Led.POSITION;
import robot.devices.Telemeters.IR_MODE;
import robot.devices.Telemeters.IR_POSITION;
import robot.exception.RobotException;
import robot.gui.*;



public final class Main extends JFrame implements Runnable {


	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;



	public static void colorimetrie() {
		Robot robot;

		try {
			//			robot = new Robot("10.226.10.90");
			robot = new Robot("192.168.1.109");
			//			robot = new Robot("ionisbot.chibre");
			robot.getLed().setLedOn();


			String[] s;

			long[] seen = {0, 0, 0};
			long time = 1;
			robot.getWheels().setSpeed(70);

			while (true) {
				s = robot.getLed().getProcessedColor();
				time = System.currentTimeMillis();

				if ("Dark".compareTo(s[2]) == 0) {
					// Front
					if ("Dark".compareTo(s[0]) == 0) {
						robot.getWheels().rotate(-10);
					} else if ("Dark".compareTo(s[1]) == 0) {
						robot.getWheels().rotate(10);						
					} else if (seen[2] > time - 150) {
						robot.getWheels().rotate(180);
					} else {
						robot.getWheels().rotate(90);
					}
					seen[2] = time + 100;
				} else { 
					robot.getWheels().setSpeed(70);
				}
				if ("Dark".compareTo(s[0]) == 0) {
					// Right
					seen[0] = time;
				} 
				if ("Dark".compareTo(s[1]) == 0) {
					// Left
					seen[1] = time;
				}

				System.out.println("value = " + s[2]);

			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RobotException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Main window = new Main ();
	}



	//						
	//			Robot robot = new Robot("ipsaib11.lan");
				
	//ConnectionRobotUdp connection = new ConnectionRobotUdp("10.226.10.90", 10002);

	//robot.getLeftWheel().setSpeed();
	//			System.out.println("Chargeur:" + robot.getBattery().isInCharge());
	//			System.out.println("Gauge:" + robot.getBattery().getGauge());
	//			System.out.println("Voltage:" + robot.getBattery().getVoltage());
	//			System.out.println("Current:" + robot.getBattery().getCurrent());


	//			robot.getWheels().setSpeed(70);
	//			robot.getWheels().getLeftWheel().setAsservMode(Wheel.WHEEL_MODE.MOT_ASSERV_PWM);
	//			while (true)

	//		Robot robot;
//			try {
//				Robot robot = new Robot("192.168.1.109");
//			
//				robot = new Robot("10.226.10.90");
	//
//				robot.getTelemeters().setMode(IR_MODE.IR_MODE_SHORT);
	//

	//				robot.getWheels().setAsservMode(Wheel.WHEEL_MODE.MOT_ASSERV_SPEED);
	//			robot.getWheels().setSpeed(70);
	//				robot.getWheels().getLeftWheel().setAcceleration(500, 20);



	//			robot.getWheels().getLeftWheel().setAcceleration(70, 70);

//				while (true){
	//
//					System.out.println(robot.getTelemeters().getDistance(IR_POSITION.FRONT_LEFT));
//					if ((robot.getTelemeters().getDistance(IR_POSITION.FRONT_LEFT) < 10) ||
	//						(robot.getTelemeters().getDistance(IR_POSITION.FRONT_RIGHT) < 10))
	//					robot.getWheels().getLeftWheel().setSpeed(0);
	//				else {
	//					robot.getWheels().setSpeed(70);
	//				}
	//
//				}
	//
//			} catch (IOException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			} catch (RobotException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//
//	}

	//				robot.getWheels().getLeftWheel().setDestination(
	//						robot.getWheels().getLeftWheel().getDestination() + 10);
	//				robot.getWheels().setSpeed(0);
	//				robot.getWheels().getLeftWheel().setAsservMode(Wheel.WHEEL_MODE.MOT_ASSERV_PWM);
	//								byte[] values;



	//								if (i++ == 100000000) { //every second
	//									robot.getWheels().getLeftWheel().getDestination();
	//									robot.getWheels().setSpeed(70);
	//									i = 0;
	//								}
	//			}
	//									values = robot.getTelemeters().getDistance();
	//									System.out.println("Telemeters value");
	//									for (int j = 0; j < values.length; j++) {
	//										System.out.print(" " + values[j]);
	//									}
	//									System.out.println();
	//					
	//					robot.displayAllInformation();
	//					if (robot.getBattery().isInCharge()) {
	//						System.out.println("CHARGE");
	//					} else {
	//						System.out.println("DECHARGE");
	//									}
	//				if (robot.getTelemeters().getDistance(Telemeters.IR_POSITION.FRONT_LEFT) < 10)
	//					robot.getWheels().rotate(90);
	//				else
	//					robot.getWheels().setSpeed(100);
	//					i = 0; // -37 7b 71
	//		 		}


	//System.out.println("Position:" + robot.getWheels().getLeftWheel().getReelPosition());
	//				robot.getWheels().setAngle(0);
	//				while (true) {
	//					Thread.sleep(1000);
	//					System.out.println("Position:" + Integer.toHexString((int) robot.getWheels().getLeftWheel().getReelPosition()));
	//				}
	//			robot.getTelemeters().setMode(Telemeters.IR_MODE.IR_MODE_SHORT);
	//			long i = 0;
	//			while (true){
	////				byte[] values;
	//
	//				if (i++ == 100000000) { //every second
	//					//					values = robot.getTelemeters().getDistance();
	//					//					System.out.println("Telemeters value");
	//					//					for (int j = 0; j < values.length; j++) {
	//					//						System.out.print(" " + values[j]);
	//					//					}
	//					//					System.out.println();
	//					//					
	//					//					robot.displayAllInformation();
	//					if (robot.getBattery().isInCharge()) {
	//						System.out.println("CHARGE");
	//					} else {
	//						System.out.println("DECHARGE");
	//					}
	//					i = 0; // -37 7b 71
	//				}
	//
	//
	//				//connection.status();
	//			}
	//			}
	//}
	public Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
	public Menu menu = null;
	public Roadmap map = null;
	public String ip = "192.168.1.109";
	
	private Main() {
		super ("SpyGround");

		menu = new Menu(this);
		getContentPane().add(menu, BorderLayout.WEST);
		
		map = new Roadmap(this, 500, 600);
		getContentPane().add(map, BorderLayout.EAST);

		pack();
		setResizable(false);
		setVisible(true);
		setDefaultLookAndFeelDecorated(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


		setLocation((int) ((screenSize.getWidth() - getWidth()) / 2), 200);

		setDefaultLookAndFeelDecorated(true);

		this.run();
		
	}
	private Robot robot = null;

	public Robot getRobot() {
		return robot;
	}

	public void setRobot(Robot robot) {
		if (robot == null)
			this.robot.connection.close();
		this.robot = robot;
	}

	public void run() {
		// TODO Auto-generated method stub
		menu.update();
//		map.update();
	}
	
	public void runIA() {
		
	}
	

}
